HTTPS是一個用於安全通信的網路協定,它能夠保護網站與用戶間的通信不被第三方窺探、篡改或冒充。
他其實就是在原本http應用層協定上再多加一層TLS。
HTTP請求與重定向:
客戶端與服務器協商:
服務器的數位證書:
數位證書
如何確保證書的可靠性
以確保證書是由一個受信任的證書頒發機構(CA)簽署的。
前面的訊息確認完之後,服務器會向客戶端發送其擁有的公開證書。
證書中包含了服務器的公開金鑰和一些證書的附加信息。客戶端會檢查證書的合法性。
客戶端回應:
客戶端生成一串隨機數字作為對話密鑰(session key),用服務器的公開金鑰加密後發送給服務器。服務器用自己的私人金鑰解密獲得這串密鑰,雙方即建立起了一個共享的密鑰。
這裡是我當初自己在看覺得很厲害的地方,先說一下對稱式加密及非對稱式加密(加密原理的部分我還沒有特別研究:
對稱式:
簡單來說就是加密解密都用同一把鑰匙
優點
加密解密的速度快
缺點
傳送鑰匙給對方過程危險,而且有心人士拿到就可以解密。
非對稱式:
加密跟解密不同鑰匙
優點
相較於對稱式安全一些,畢竟不用傳解密用的鑰匙。
缺點
加密解密的速度較慢(原理還沒研究抱歉)
合體
magic!
實際步驟
客戶端生成一個隨機的**premaster secret
**。
客戶端使用服務器的公鑰加密**premaster secret
**,然後將其發送到服務器。
服務器使用它的私鑰來解密收到的**premaster secret
**。
客戶端和服務器都使用從**premaster secret
衍生出的master secret
**,通過一個安全的密鑰導出函數,生成會話中用到的各種密鑰,例如對稱密鑰、MAC密鑰等。
從**master secret
中派生出session keys
**,用於對稱加密和解密以及生成/驗證消息摘要。
建立安全通道:
在建立了對稱式加密的鑰匙後,雙方會用前面得到的共享密鑰來建立一個安全的通信通道,之後的所有通信都會在這個加密通道中進行。
其實這個部分實際上在做,可能套件安裝然後執行一下,一下子就結束了,但我自己真的是純粹好奇,結果才發現裡面有這麼多事情要做,就分享一下。
對於加密的一些細節原理我推薦這個網站:
https://www.tsnien.idv.tw/Security_WebBook/chap3/3-6 Diffie-Hellman 鑰匙交換法.html
真的解釋的很詳細很厲害,有空可以研究看看。